]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensionSystem: Add 'extension-status-changed' signal
authorJasper St. Pierre <jstpierre@mecheye.net>
Tue, 28 Jun 2011 02:21:02 +0000 (22:21 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Wed, 24 Aug 2011 17:58:22 +0000 (13:58 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=654770

js/ui/extensionSystem.js
js/ui/shellDBus.js

index 8907a8ee8d391de7cea6e8de2572f87e54ddbac9..3bd0cbe31fd35c906586b045729459357474a80d 100644 (file)
@@ -182,6 +182,7 @@ function disableExtension(uuid) {
     }
 
     meta.state = ExtensionState.DISABLED;
+    _signals.emit('extension-state-changed', meta);
 }
 
 function enableExtension(uuid) {
@@ -202,12 +203,16 @@ function enableExtension(uuid) {
     }
 
     meta.state = ExtensionState.ENABLED;
+    _signals.emit('extension-state-changed', meta);
 }
 
 function logExtensionError(uuid, message) {
     if (!errors[uuid]) errors[uuid] = [];
     errors[uuid].push(message);
     global.logError('Extension "%s" had error: %s'.format(uuid, message));
+    _signals.emit('extension-state-changed', { uuid: uuid,
+                                               error: message,
+                                               state: ExtensionState.ERROR });
 }
 
 function loadExtension(dir, enabled, type) {
@@ -268,6 +273,7 @@ function loadExtension(dir, enabled, type) {
     extensionMeta[uuid] = meta;
     meta.type = type;
     meta.path = dir.get_path();
+    meta.error = '';
 
     // Default to error, we set success as the last step
     meta.state = ExtensionState.ERROR;
@@ -335,6 +341,7 @@ function loadExtension(dir, enabled, type) {
         enableExtension(uuid);
 
     _signals.emit('extension-loaded', meta.uuid);
+    _signals.emit('extension-state-changed', meta);
     global.log('Loaded extension ' + meta.uuid);
 }
 
index 07f2881b9e44dbb2e1ca8fb9d2dd5229baec0a12..cf390349f6a75289fec1dab625eddbf8f1437e85 100644 (file)
@@ -1,6 +1,7 @@
 /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
 
 const DBus = imports.dbus;
+const Lang = imports.lang;
 
 const Config = imports.misc.config;
 const ExtensionSystem = imports.ui.extensionSystem;
@@ -49,7 +50,8 @@ const GnomeShellIface = {
                 outSignature: ''
               }
              ],
-    signals: [],
+    signals: [{ name: 'ExtensionStatusChanged',
+                inSignature: 'sis' }],
     properties: [{ name: 'OverviewActive',
                    signature: 'b',
                    access: 'readwrite' },
@@ -68,6 +70,8 @@ function GnomeShell() {
 GnomeShell.prototype = {
     _init: function() {
         DBus.session.exportObject('/org/gnome/Shell', this);
+        ExtensionSystem.connect('extension-state-changed',
+                                Lang.bind(this, this._extensionStateChanged));
     },
 
     /**
@@ -187,7 +191,14 @@ GnomeShell.prototype = {
 
     ApiVersion: 1,
 
-    ShellVersion: Config.PACKAGE_VERSION
+    ShellVersion: Config.PACKAGE_VERSION,
+
+    _extensionStateChanged: function(_, newState) {
+        DBus.session.emit_signal('/org/gnome/Shell',
+                                 'org.gnome.Shell',
+                                 'ExtensionStatusChanged', 'sis',
+                                 [newState.uuid, newState.state, newState.error]);
+    }
 };
 
 DBus.conformExport(GnomeShell.prototype, GnomeShellIface);